我用 2 万条聊天记录,创造了我的数字生命

本文仍在持续更新中!

最近有个奇奇怪怪的想法:如果用我的所有社交软件的聊天记录来训练像 ChatGPT 这样的大语言模型,那么它能不能学会我的说话风格,甚至拥有我的记忆呢?

说干就干,我从我的 QQ 导出所有聊天记录,并构造出了两万条对话数据,使用 P-Tune v2 微调清华大学开源的 ChatGLM-6B 模型,创造了我的数字生命!

项目已开源:kcxain/CloneLLM: Clone Yourself by Fine-tuning a Large Language Model | 用大语言模型创造你的数字生命! (github.com)

一、数据集构造

最后构造的对话数据集示例如下:

{
    "prompt": "是状态图的九个公式 吧 不是九个状态图吧",
    "response": "能手写吗",
    "history": [
        ["问一下子", "哪来的九张状态转移图啊 就那一张 后面的都是结果"],
        ["哎呀给我看看嘛 你什么时候穿正装", "你再把PPT发给我"],
        ["我猜的还是很接近滴嘛", "刚剪完头"],
        ["23 激情猜价", "猪肘是另外现切的 9块 剩下的10.5"],
        ["左上角是什么", "猪脚 猜猜这总共多少钱"],
        ["你说嘞", "我咋知道捏"]
    ]
}
{
    "prompt": "下周三之前",
    "response": "论文的这个公式错了 你去群里说一下 说这个论文中这个公式打错了 应该是",
    "history": [
        ["是状态图的九个公式 吧 不是九个状态图吧", "能手写吗"],
        ["问一下子", "哪来的九张状态转移图啊 就那一张 后面的都是结果"],
        ["哎呀给我看看嘛 你什么时候穿正装", "你再把PPT发给我"],
        ["我猜的还是很接近滴嘛", "刚剪完头"],
        ["23 激情猜价", "猪肘是另外现切的 9块 剩下的10.5"],
        ["左上角是什么", "猪脚 猜猜这总共多少钱"]
    ]
}

二、微调策略

1. P-tuning v2

论文链接:P-Tuning v2: Prompt Tuning Can Be Comparable to Finetuning Universally Across Scales and Tasks

简单来说,就是在模型所有层添加可训练的 Prompts 作为 Prefix,训练时冻结原始预训练模型参数,只训练 Prefix 部分。

2. LoRA 微调

TODO

3. 全参数微调

TODO

4. 微调参数集成

UniPELT: A Unified Framework for Parameter-Efficient Language Model Tuning

TODO

三、结果分析

目前结果还很差劲: